home *** CD-ROM | disk | FTP | other *** search
/ Aminet 30 / Aminet 30 (1999)(Schatztruhe)[!][Apr 1999].iso / Aminet / dev / mui / bcc_src.lha / Parser / TextItem.cpp < prev    next >
C/C++ Source or Header  |  1998-03-15  |  613b  |  45 lines

  1. #include "TextItem.h"
  2. #include <string.h>
  3.  
  4. TextItem::TextItem( char *n, short len )
  5. {
  6.  
  7.     tv = 0;
  8.     if( n ) {
  9.         if( !len ) strcpy( Name, n );
  10.         else {
  11.             strncpy( Name, n, len );
  12.             Name[ len ] = 0;
  13.         }
  14.     }
  15.  
  16. }
  17.  
  18. unsigned long TextItem::CalcTV( void )
  19. {
  20.  
  21.     if( tv ) return tv;
  22.     
  23.     short f;
  24.     for( f = 0; f< strlen( Name ); f++ ) tv ^= Name[f]<<f;
  25.     tv ^= (tv>>16);
  26.     tv &= 0xffff;
  27.     
  28.     return tv;
  29.  
  30.  
  31. }
  32.  
  33. TextItem *TextItem::FindItem( char *i, short len )
  34. {
  35.  
  36.     if( !len ) len = strlen( i );
  37.  
  38.     FScan( TextItem, child, this ) {
  39.         if( strlen( child->Name ) == len && !strncmp( i, child->Name, len ) ) return child;
  40.     }
  41.  
  42.     return 0;
  43.  
  44. }
  45.